﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Npgsql;

namespace VoteInformationSystem.Models
{
    public class NpgsqlStimmeRepository : IStimmeRepository
    {
        public void Save(Stimme s)
        {
            using (NpgsqlConnection pgConnection = NpgsqlConnectionProvider.GetConnection())
            {
                if (s.IdDirektkandidat != null)
                {
                    using (
                        NpgsqlCommand command =
                            new NpgsqlCommand(
                                "insert into \"Erststimmen\" (iddirektkandidat, idwahlkreis) values (:direktkandidat, :wahlkreis)",
                                pgConnection))
                    {
                        command.Parameters.Add(new NpgsqlParameter("direktkandidat", NpgsqlTypes.NpgsqlDbType.Integer));
                        command.Parameters.Add(new NpgsqlParameter("wahlkreis", NpgsqlTypes.NpgsqlDbType.Integer));
                        command.Prepare();
                        command.Parameters.First<NpgsqlParameter>().Value = s.IdDirektkandidat;
                        command.Parameters.Last<NpgsqlParameter>().Value = s.IdWahlkreis;
                        command.ExecuteNonQuery();
                    }
                }
                if (s.IdPartei != null)
                {
                    using (
                        NpgsqlCommand command =
                            new NpgsqlCommand(
                                "insert into \"Zweitstimmen\" (idpartei, idwahlkreis) values (:partei, :wahlkreis)",
                                pgConnection))
                    {
                        command.Parameters.Add(new NpgsqlParameter("partei", NpgsqlTypes.NpgsqlDbType.Integer));
                        command.Parameters.Add(new NpgsqlParameter("wahlkreis", NpgsqlTypes.NpgsqlDbType.Integer));
                        command.Prepare();
                        command.Parameters.First<NpgsqlParameter>().Value = s.IdPartei;
                        command.Parameters.Last<NpgsqlParameter>().Value = s.IdWahlkreis;
                        command.ExecuteNonQuery();
                    }
                }
            }
        }
    }
}